home *** CD-ROM | disk | FTP | other *** search
/ Popular Request / By Popular Request (Arsenal Computer)(SysOptics Distribution System).ISO / amiga2 / gas-2_2.lha / gas-2.2 / as.info-2 (.txt) < prev    next >
GNU Info File  |  1994-03-17  |  50KB  |  1,011 lines

  1. This is Info file as.info, produced by Makeinfo-1.55 from the input
  2. file ./as.texinfo.
  3. START-INFO-DIR-ENTRY
  4. * As::                          The GNU assembler.
  5. END-INFO-DIR-ENTRY
  6.    This file documents the GNU Assembler "as".
  7.    Copyright (C) 1991, 1992, 1993 Free Software Foundation, Inc.
  8.    Permission is granted to make and distribute verbatim copies of this
  9. manual provided the copyright notice and this permission notice are
  10. preserved on all copies.
  11.    Permission is granted to copy and distribute modified versions of
  12. this manual under the conditions for verbatim copying, provided also
  13. that the section entitled "GNU General Public License" is included
  14. exactly as in the original, and provided that the entire resulting
  15. derived work is distributed under the terms of a permission notice
  16. identical to this one.
  17.    Permission is granted to copy and distribute translations of this
  18. manual into another language, under the above conditions for modified
  19. versions, except that the section entitled "GNU General Public License"
  20. may be included in a translation approved by the Free Software
  21. Foundation instead of in the original English.
  22. File: as.info,  Node: Symbol Attributes,  Prev: Dot,  Up: Symbols
  23. Symbol Attributes
  24. =================
  25.    Every symbol has, as well as its name, the attributes "Value" and
  26. "Type".  Depending on output format, symbols can also have auxiliary
  27. attributes.
  28.    If you use a symbol without defining it, `as' assumes zero for all
  29. these attributes, and probably won't warn you.  This makes the symbol
  30. an externally defined symbol, which is generally what you would want.
  31. * Menu:
  32. * Symbol Value::                Value
  33. * Symbol Type::                 Type
  34. * a.out Symbols::               Symbol Attributes: `a.out'
  35. * COFF Symbols::                Symbol Attributes for COFF
  36. File: as.info,  Node: Symbol Value,  Next: Symbol Type,  Up: Symbol Attributes
  37. Value
  38. -----
  39.    The value of a symbol is (usually) 32 bits.  For a symbol which
  40. labels a location in the text, data, bss or absolute sections the value
  41. is the number of addresses from the start of that section to the label.
  42. Naturally for text, data and bss sections the value of a symbol changes
  43. as `ld' changes section base addresses during linking.  Absolute
  44. symbols' values do not change during linking: that is why they are
  45. called absolute.
  46.    The value of an undefined symbol is treated in a special way.  If it
  47. is 0 then the symbol is not defined in this assembler source program,
  48. and `ld' will try to determine its value from other programs it is
  49. linked with.  You make this kind of symbol simply by mentioning a symbol
  50. name without defining it.  A non-zero value represents a `.comm' common
  51. declaration.  The value is how much common storage to reserve, in bytes
  52. (addresses).  The symbol refers to the first address of the allocated
  53. storage.
  54. File: as.info,  Node: Symbol Type,  Next: a.out Symbols,  Prev: Symbol Value,  Up: Symbol Attributes
  55.    The type attribute of a symbol contains relocation (section)
  56. information, any flag settings indicating that a symbol is external, and
  57. (optionally), other information for linkers and debuggers.  The exact
  58. format depends on the object-code output format in use.
  59. File: as.info,  Node: a.out Symbols,  Next: COFF Symbols,  Prev: Symbol Type,  Up: Symbol Attributes
  60. Symbol Attributes: `a.out'
  61. --------------------------
  62. * Menu:
  63. * Symbol Desc::                 Descriptor
  64. * Symbol Other::                Other
  65. File: as.info,  Node: Symbol Desc,  Next: Symbol Other,  Up: a.out Symbols
  66. Descriptor
  67. ..........
  68.    This is an arbitrary 16-bit value.  You may establish a symbol's
  69. descriptor value by using a `.desc' statement (*note `.desc': Desc.).
  70. A descriptor value means nothing to `as'.
  71. File: as.info,  Node: Symbol Other,  Prev: Symbol Desc,  Up: a.out Symbols
  72. Other
  73. .....
  74.    This is an arbitrary 8-bit value.  It means nothing to `as'.
  75. File: as.info,  Node: COFF Symbols,  Prev: a.out Symbols,  Up: Symbol Attributes
  76. Symbol Attributes for COFF
  77. --------------------------
  78.    The COFF format supports a multitude of auxiliary symbol attributes;
  79. like the primary symbol attributes, they are set between `.def' and
  80. `.endef' directives.
  81. Primary Attributes
  82. ..................
  83.    The symbol name is set with `.def'; the value and type,
  84. respectively, with `.val' and `.type'.
  85. Auxiliary Attributes
  86. ....................
  87.    The `as' directives `.dim', `.line', `.scl', `.size', and `.tag' can
  88. generate auxiliary symbol table information for COFF.
  89. File: as.info,  Node: Expressions,  Next: Pseudo Ops,  Prev: Symbols,  Up: Top
  90. Expressions
  91. ***********
  92.    An "expression" specifies an address or numeric value.  Whitespace
  93. may precede and/or follow an expression.
  94. * Menu:
  95. * Empty Exprs::                 Empty Expressions
  96. * Integer Exprs::               Integer Expressions
  97. File: as.info,  Node: Empty Exprs,  Next: Integer Exprs,  Up: Expressions
  98. Empty Expressions
  99. =================
  100.    An empty expression has no value: it is just whitespace or null.
  101. Wherever an absolute expression is required, you may omit the
  102. expression and `as' will assume a value of (absolute) 0.  This is
  103. compatible with other assemblers.
  104. File: as.info,  Node: Integer Exprs,  Prev: Empty Exprs,  Up: Expressions
  105. Integer Expressions
  106. ===================
  107.    An "integer expression" is one or more *arguments* delimited by
  108. *operators*.
  109. * Menu:
  110. * Arguments::                   Arguments
  111. * Operators::                   Operators
  112. * Prefix Ops::                  Prefix Operators
  113. * Infix Ops::                   Infix Operators
  114. File: as.info,  Node: Arguments,  Next: Operators,  Up: Integer Exprs
  115. Arguments
  116. ---------
  117.    "Arguments" are symbols, numbers or subexpressions.  In other
  118. contexts arguments are sometimes called "arithmetic operands".  In this
  119. manual, to avoid confusing them with the "instruction operands" of the
  120. machine language, we use the term "argument" to refer to parts of
  121. expressions only, reserving the word "operand" to refer only to machine
  122. instruction operands.
  123.    Symbols are evaluated to yield {SECTION NNN} where SECTION is one of
  124. text, data, bss, absolute, or undefined.  NNN is a signed, 2's
  125. complement 32 bit integer.
  126.    Numbers are usually integers.
  127.    A number can be a flonum or bignum.  In this case, you are warned
  128. that only the low order 32 bits are used, and `as' pretends these 32
  129. bits are an integer.  You may write integer-manipulating instructions
  130. that act on exotic constants, compatible with other assemblers.
  131.    Subexpressions are a left parenthesis `(' followed by an integer
  132. expression, followed by a right parenthesis `)'; or a prefix operator
  133. followed by an argument.
  134. File: as.info,  Node: Operators,  Next: Prefix Ops,  Prev: Arguments,  Up: Integer Exprs
  135. Operators
  136. ---------
  137.    "Operators" are arithmetic functions, like `+' or `%'.  Prefix
  138. operators are followed by an argument.  Infix operators appear between
  139. their arguments.  Operators may be preceded and/or followed by
  140. whitespace.
  141. File: as.info,  Node: Prefix Ops,  Next: Infix Ops,  Prev: Operators,  Up: Integer Exprs
  142. Prefix Operator
  143. ---------------
  144.    `as' has the following "prefix operators".  They each take one
  145. argument, which must be absolute.
  146.      "Negation".  Two's complement negation.
  147.      "Complementation".  Bitwise not.
  148. File: as.info,  Node: Infix Ops,  Prev: Prefix Ops,  Up: Integer Exprs
  149. Infix Operators
  150. ---------------
  151.    "Infix operators" take two arguments, one on either side.  Operators
  152. have precedence, but operations with equal precedence are performed left
  153. to right.  Apart from `+' or `-', both arguments must be absolute, and
  154. the result is absolute.
  155.   1. Highest Precedence
  156.     `*'
  157.           "Multiplication".
  158.     `/'
  159.           "Division".  Truncation is the same as the C operator `/'
  160.     `%'
  161.           "Remainder".
  162.     `<'
  163.     `<<'
  164.           "Shift Left".  Same as the C operator `<<'.
  165.     `>'
  166.     `>>'
  167.           "Shift Right".  Same as the C operator `>>'.
  168.   2. Intermediate precedence
  169.     `|'
  170.           "Bitwise Inclusive Or".
  171.     `&'
  172.           "Bitwise And".
  173.     `^'
  174.           "Bitwise Exclusive Or".
  175.     `!'
  176.           "Bitwise Or Not".
  177.   3. Lowest Precedence
  178.     `+'
  179.           "Addition".  If either argument is absolute, the result has
  180.           the section of the other argument.  If either argument is
  181.           pass1 or undefined, the result is pass1.  Otherwise `+' is
  182.           illegal.
  183.     `-'
  184.           "Subtraction".  If the right argument is absolute, the result
  185.           has the section of the left argument.  If either argument is
  186.           pass1 the result is pass1.  If either argument is undefined
  187.           the result is difference section.  If both arguments are in
  188.           the same section, the result is absolute--provided that
  189.           section is one of text, data or bss.  Otherwise subtraction
  190.           is illegal.
  191.    The sense of the rule for addition is that it's only meaningful to
  192. add the *offsets* in an address; you can only have a defined section in
  193. one of the two arguments.
  194.    Similarly, you can't subtract quantities from two different sections.
  195. File: as.info,  Node: Pseudo Ops,  Next: Machine Dependencies,  Prev: Expressions,  Up: Top
  196. Assembler Directives
  197. ********************
  198.    All assembler directives have names that begin with a period (`.').
  199. The rest of the name is letters, usually in lower case.
  200.    This chapter discusses directives that are available regardless of
  201. the target machine configuration for the GNU assembler.  Some machine
  202. configurations provide additional directives.  *Note Machine
  203. Dependencies::.
  204. * Menu:
  205. * Abort::                       `.abort'
  206. * ABORT::                       `.ABORT'
  207. * Align::                       `.align ABS-EXPR , ABS-EXPR'
  208. * App-File::                    `.app-file STRING'
  209. * Ascii::                       `.ascii "STRING"'...
  210. * Asciz::                       `.asciz "STRING"'...
  211. * Byte::                        `.byte EXPRESSIONS'
  212. * Comm::                        `.comm SYMBOL , LENGTH '
  213. * Data::                        `.data SUBSECTION'
  214. * Def::                         `.def NAME'
  215. * Desc::                        `.desc SYMBOL, ABS-EXPRESSION'
  216. * Dim::                         `.dim'
  217. * Double::                      `.double FLONUMS'
  218. * Eject::                       `.eject'
  219. * Else::                        `.else'
  220. * Endef::                       `.endef'
  221. * Endif::                       `.endif'
  222. * Equ::                         `.equ SYMBOL, EXPRESSION'
  223. * Extern::                      `.extern'
  224. * File::                        `.file STRING'
  225. * Fill::                        `.fill REPEAT , SIZE , VALUE'
  226. * Float::                       `.float FLONUMS'
  227. * Global::                      `.global SYMBOL', `.globl SYMBOL'
  228. * hword::                       `.hword EXPRESSIONS'
  229. * Ident::                       `.ident'
  230. * If::                          `.if ABSOLUTE EXPRESSION'
  231. * Include::                     `.include "FILE"'
  232. * Int::                         `.int EXPRESSIONS'
  233. * Lcomm::                       `.lcomm SYMBOL , LENGTH'
  234. * Lflags::                      `.lflags'
  235. * Line::                        `.line LINE-NUMBER'
  236. * Ln::                          `.ln LINE-NUMBER'
  237. * List::                        `.list'
  238. * Long::                        `.long EXPRESSIONS'
  239. * Nolist::                      `.nolist'
  240. * Octa::                        `.octa BIGNUMS'
  241. * Org::                         `.org NEW-LC , FILL'
  242. * Psize::                       `.psize LINES, COLUMNS'
  243. * Quad::                        `.quad BIGNUMS'
  244. * Sbttl::                       `.sbttl "SUBHEADING"'
  245. * Scl::                         `.scl CLASS'
  246. * Section::                     `.section NAME, SUBSECTION'
  247. * Set::                         `.set SYMBOL, EXPRESSION'
  248. * Short::                       `.short EXPRESSIONS'
  249. * Single::                      `.single FLONUMS'
  250. * Size::                        `.size'
  251. * Space::                       `.space SIZE , FILL'
  252. * Stab::                        `.stabd, .stabn, .stabs'
  253. * Tag::                         `.tag STRUCTNAME'
  254. * Text::                        `.text SUBSECTION'
  255. * Title::                       `.title "HEADING"'
  256. * Type::                        `.type INT'
  257. * Val::                         `.val ADDR'
  258. * Word::                        `.word EXPRESSIONS'
  259. * Deprecated::                  Deprecated Directives
  260. File: as.info,  Node: Abort,  Next: ABORT,  Up: Pseudo Ops
  261. `.abort'
  262. ========
  263.    This directive stops the assembly immediately.  It is for
  264. compatibility with other assemblers.  The original idea was that the
  265. assembly language source would be piped into the assembler.  If the
  266. sender of the source quit, it could use this directive tells `as' to
  267. quit also.  One day `.abort' will not be supported.
  268. File: as.info,  Node: ABORT,  Next: Align,  Prev: Abort,  Up: Pseudo Ops
  269. `.ABORT'
  270. ========
  271.    When producing COFF output, `as' accepts this directive as a synonym
  272. for `.abort'.
  273.    When producing `b.out' output, `as' accepts this directive, but
  274. ignores it.
  275. File: as.info,  Node: Align,  Next: App-File,  Prev: ABORT,  Up: Pseudo Ops
  276. `.align ABS-EXPR , ABS-EXPR'
  277. ============================
  278.    Pad the location counter (in the current subsection) to a particular
  279. storage boundary.  The first expression (which must be absolute) is the
  280. number of low-order zero bits the location counter will have after
  281. advancement.  For example `.align 3' will advance the location counter
  282. until it a multiple of 8.  If the location counter is already a
  283. multiple of 8, no change is needed.
  284.    The second expression (also absolute) gives the value to be stored in
  285. the padding bytes.  It (and the comma) may be omitted.  If it is
  286. omitted, the padding bytes are zero.
  287. File: as.info,  Node: App-File,  Next: Ascii,  Prev: Align,  Up: Pseudo Ops
  288. `.app-file STRING'
  289. ==================
  290.    `.app-file' (which may also be spelled `.file') tells `as' that we
  291. are about to start a new logical file.  STRING is the new file name.
  292. In general, the filename is recognized whether or not it is surrounded
  293. by quotes `"'; but if you wish to specify an empty file name is
  294. permitted, you must give the quotes-`""'.  This statement may go away in
  295. future: it is only recognized to be compatible with old `as' programs.
  296. File: as.info,  Node: Ascii,  Next: Asciz,  Prev: App-File,  Up: Pseudo Ops
  297. `.ascii "STRING"'...
  298. ====================
  299.    `.ascii' expects zero or more string literals (*note Strings::.)
  300. separated by commas.  It assembles each string (with no automatic
  301. trailing zero byte) into consecutive addresses.
  302. File: as.info,  Node: Asciz,  Next: Byte,  Prev: Ascii,  Up: Pseudo Ops
  303. `.asciz "STRING"'...
  304. ====================
  305.    `.asciz' is just like `.ascii', but each string is followed by a
  306. zero byte.  The "z" in `.asciz' stands for "zero".
  307. File: as.info,  Node: Byte,  Next: Comm,  Prev: Asciz,  Up: Pseudo Ops
  308. `.byte EXPRESSIONS'
  309. ===================
  310.    `.byte' expects zero or more expressions, separated by commas.  Each
  311. expression is assembled into the next byte.
  312. File: as.info,  Node: Comm,  Next: Data,  Prev: Byte,  Up: Pseudo Ops
  313. `.comm SYMBOL , LENGTH '
  314. ========================
  315.    `.comm' declares a named common area in the bss section.  Normally
  316. `ld' reserves memory addresses for it during linking, so no partial
  317. program defines the location of the symbol.  Use `.comm' to tell `ld'
  318. that it must be at least LENGTH bytes long.  `ld' will allocate space
  319. for each `.comm' symbol that is at least as long as the longest `.comm'
  320. request in any of the partial programs linked.  LENGTH is an absolute
  321. expression.
  322. File: as.info,  Node: Data,  Next: Def,  Prev: Comm,  Up: Pseudo Ops
  323. `.data SUBSECTION'
  324. ==================
  325.    `.data' tells `as' to assemble the following statements onto the end
  326. of the data subsection numbered SUBSECTION (which is an absolute
  327. expression).  If SUBSECTION is omitted, it defaults to zero.
  328. File: as.info,  Node: Def,  Next: Desc,  Prev: Data,  Up: Pseudo Ops
  329. `.def NAME'
  330. ===========
  331.    Begin defining debugging information for a symbol NAME; the
  332. definition extends until the `.endef' directive is encountered.
  333.    This directive is only observed when `as' is configured for COFF
  334. format output; when producing `b.out', `.def' is recognized, but
  335. ignored.
  336. File: as.info,  Node: Desc,  Next: Dim,  Prev: Def,  Up: Pseudo Ops
  337. `.desc SYMBOL, ABS-EXPRESSION'
  338. ==============================
  339.    This directive sets the descriptor of the symbol (*note Symbol
  340. Attributes::.) to the low 16 bits of an absolute expression.
  341.    The `.desc' directive is not available when `as' is configured for
  342. COFF output; it is only for `a.out' or `b.out' object format.  For the
  343. sake of compatibility, `as' will accept it, but produce no output, when
  344. configured for COFF.
  345. File: as.info,  Node: Dim,  Next: Double,  Prev: Desc,  Up: Pseudo Ops
  346. `.dim'
  347. ======
  348.    This directive is generated by compilers to include auxiliary
  349. debugging information in the symbol table.  It is only permitted inside
  350. `.def'/`.endef' pairs.
  351.    `.dim' is only meaningful when generating COFF format output; when
  352. `as' is generating `b.out', it accepts this directive but ignores it.
  353. File: as.info,  Node: Double,  Next: Eject,  Prev: Dim,  Up: Pseudo Ops
  354. `.double FLONUMS'
  355. =================
  356.    `.double' expects zero or more flonums, separated by commas.  It
  357. assembles floating point numbers.  The exact kind of floating point
  358. numbers emitted depends on how `as' is configured.  *Note Machine
  359. Dependencies::.
  360. File: as.info,  Node: Eject,  Next: Else,  Prev: Double,  Up: Pseudo Ops
  361. `.eject'
  362. ========
  363.    Force a page break at this point, when generating assembly listings.
  364. File: as.info,  Node: Else,  Next: Endef,  Prev: Eject,  Up: Pseudo Ops
  365. `.else'
  366. =======
  367.    `.else' is part of the `as' support for conditional assembly; *note
  368. `.if': If..  It marks the beginning of a section of code to be
  369. assembled if the condition for the preceding `.if' was false.
  370. File: as.info,  Node: Endef,  Next: Endif,  Prev: Else,  Up: Pseudo Ops
  371. `.endef'
  372. ========
  373.    This directive flags the end of a symbol definition begun with
  374. `.def'.
  375.    `.endef' is only meaningful when generating COFF format output; if
  376. `as' is configured to generate `b.out', it accepts this directive but
  377. ignores it.
  378. File: as.info,  Node: Endif,  Next: Equ,  Prev: Endef,  Up: Pseudo Ops
  379. `.endif'
  380. ========
  381.    `.endif' is part of the `as' support for conditional assembly; it
  382. marks the end of a block of code that is only assembled conditionally.
  383. *Note `.if': If.
  384. File: as.info,  Node: Equ,  Next: Extern,  Prev: Endif,  Up: Pseudo Ops
  385. `.equ SYMBOL, EXPRESSION'
  386. =========================
  387.    This directive sets the value of SYMBOL to EXPRESSION.  It is
  388. synonymous with `.set'; *note `.set': Set..
  389. File: as.info,  Node: Extern,  Next: File,  Prev: Equ,  Up: Pseudo Ops
  390. `.extern'
  391. =========
  392.    `.extern' is accepted in the source program--for compatibility with
  393. other assemblers--but it is ignored.  `as' treats all undefined symbols
  394. as external.
  395. File: as.info,  Node: File,  Next: Fill,  Prev: Extern,  Up: Pseudo Ops
  396. `.file STRING'
  397. ==============
  398.    `.file' (which may also be spelled `.app-file') tells `as' that we
  399. are about to start a new logical file.  STRING is the new file name.
  400. In general, the filename is recognized whether or not it is surrounded
  401. by quotes `"'; but if you wish to specify an empty file name, you must
  402. give the quotes-`""'.  This statement may go away in future: it is only
  403. recognized to be compatible with old `as' programs.  In some
  404. configurations of `as', `.file' has already been removed to avoid
  405. conflicts with other assemblers.  *Note Machine Dependencies::.
  406. File: as.info,  Node: Fill,  Next: Float,  Prev: File,  Up: Pseudo Ops
  407. `.fill REPEAT , SIZE , VALUE'
  408. =============================
  409.    RESULT, SIZE and VALUE are absolute expressions.  This emits REPEAT
  410. copies of SIZE bytes.  REPEAT may be zero or more.  SIZE may be zero or
  411. more, but if it is more than 8, then it is deemed to have the value 8,
  412. compatible with other people's assemblers.  The contents of each REPEAT
  413. bytes is taken from an 8-byte number.  The highest order 4 bytes are
  414. zero.  The lowest order 4 bytes are VALUE rendered in the byte-order of
  415. an integer on the computer `as' is assembling for.  Each SIZE bytes in
  416. a repetition is taken from the lowest order SIZE bytes of this number.
  417. Again, this bizarre behavior is compatible with other people's
  418. assemblers.
  419.    SIZE and VALUE are optional.  If the second comma and VALUE are
  420. absent, VALUE is assumed zero.  If the first comma and following tokens
  421. are absent, SIZE is assumed to be 1.
  422. File: as.info,  Node: Float,  Next: Global,  Prev: Fill,  Up: Pseudo Ops
  423. `.float FLONUMS'
  424. ================
  425.    This directive assembles zero or more flonums, separated by commas.
  426. It has the same effect as `.single'.  The exact kind of floating point
  427. numbers emitted depends on how `as' is configured.  *Note Machine
  428. Dependencies::.
  429. File: as.info,  Node: Global,  Next: hword,  Prev: Float,  Up: Pseudo Ops
  430. `.global SYMBOL', `.globl SYMBOL'
  431. =================================
  432.    `.global' makes the symbol visible to `ld'.  If you define SYMBOL in
  433. your partial program, its value is made available to other partial
  434. programs that are linked with it.  Otherwise, SYMBOL will take its
  435. attributes from a symbol of the same name from another partial program
  436. it is linked with.
  437.    Both spellings (`.globl' and `.global') are accepted, for
  438. compatibility with other assemblers.
  439. File: as.info,  Node: hword,  Next: Ident,  Prev: Global,  Up: Pseudo Ops
  440. `.hword EXPRESSIONS'
  441. ====================
  442.    This expects zero or more EXPRESSIONS, and emits a 16 bit number for
  443. each.
  444.    This directive is a synonym for `.short'; depending on the target
  445. architecture, it may also be a synonym for `.word'.
  446. File: as.info,  Node: Ident,  Next: If,  Prev: hword,  Up: Pseudo Ops
  447. `.ident'
  448. ========
  449.    This directive is used by some assemblers to place tags in object
  450. files.  `as' simply accepts the directive for source-file compatibility
  451. with such assemblers, but does not actually emit anything for it.
  452. File: as.info,  Node: If,  Next: Include,  Prev: Ident,  Up: Pseudo Ops
  453. `.if ABSOLUTE EXPRESSION'
  454. =========================
  455.    `.if' marks the beginning of a section of code which is only
  456. considered part of the source program being assembled if the argument
  457. (which must be an ABSOLUTE EXPRESSION) is non-zero.  The end of the
  458. conditional section of code must be marked by `.endif' (*note `.endif':
  459. Endif.); optionally, you may include code for the alternative
  460. condition, flagged by `.else' (*note `.else': Else..
  461.    The following variants of `.if' are also supported:
  462. `.ifdef SYMBOL'
  463.      Assembles the following section of code if the specified SYMBOL
  464.      has been defined.
  465. `.ifndef SYMBOL'
  466. `ifnotdef SYMBOL'
  467.      Assembles the following section of code if the specified SYMBOL
  468.      has not been defined.  Both spelling variants are equivalent.
  469. File: as.info,  Node: Include,  Next: Int,  Prev: If,  Up: Pseudo Ops
  470. `.include "FILE"'
  471. =================
  472.    This directive provides a way to include supporting files at
  473. specified points in your source program.  The code from FILE is
  474. assembled as if it followed the point of the `.include'; when the end
  475. of the included file is reached, assembly of the original file
  476. continues.  You can control the search paths used with the `-I'
  477. command-line option (*note Command-Line Options: Invoking.).  Quotation
  478. marks are required around FILE.
  479. File: as.info,  Node: Int,  Next: Lcomm,  Prev: Include,  Up: Pseudo Ops
  480. `.int EXPRESSIONS'
  481. ==================
  482.    Expect zero or more EXPRESSIONS, of any section, separated by
  483. commas.  For each expression, emit a 32-bit number that will, at run
  484. time, be the value of that expression.  The byte order of the
  485. expression depends on what kind of computer will run the program.
  486. File: as.info,  Node: Lcomm,  Next: Lflags,  Prev: Int,  Up: Pseudo Ops
  487. `.lcomm SYMBOL , LENGTH'
  488. ========================
  489.    Reserve LENGTH (an absolute expression) bytes for a local common
  490. denoted by SYMBOL.  The section and value of SYMBOL are those of the
  491. new local common.  The addresses are allocated in the bss section, so
  492. at run-time the bytes will start off zeroed.  SYMBOL is not declared
  493. global (*note `.global': Global.), so is normally not visible to `ld'.
  494. File: as.info,  Node: Lflags,  Next: Line,  Prev: Lcomm,  Up: Pseudo Ops
  495. `.lflags'
  496. =========
  497.    `as' accepts this directive, for compatibility with other
  498. assemblers, but ignores it.
  499. File: as.info,  Node: Line,  Next: Ln,  Prev: Lflags,  Up: Pseudo Ops
  500. `.line LINE-NUMBER'
  501. ===================
  502.    Tell `as' to change the logical line number.  LINE-NUMBER must be an
  503. absolute expression.  The next line will have that logical line number.
  504. So any other statements on the current line (after a statement
  505. separator character) will be reported as on logical line number
  506. LINE-NUMBER - 1.  One day this directive will be unsupported: it is
  507. used only for compatibility with existing assembler programs.
  508.    *Warning:* In the AMD29K configuration of as, this command is only
  509. available with the name `.ln', rather than as either `.line' or `.ln'.
  510.    Even though this is a directive associated with the `a.out' or
  511. `b.out' object-code formats, `as' will still recognize it when
  512. producing COFF output, and will treat `.line' as though it were the
  513. COFF `.ln' *if* it is found outside a `.def'/`.endef' pair.
  514.    Inside a `.def', `.line' is, instead, one of the directives used by
  515. compilers to generate auxiliary symbol information for debugging.
  516. File: as.info,  Node: Ln,  Next: List,  Prev: Line,  Up: Pseudo Ops
  517. `.ln LINE-NUMBER'
  518. =================
  519.    `.ln' is a synonym for `.line'.
  520. File: as.info,  Node: List,  Next: Long,  Prev: Ln,  Up: Pseudo Ops
  521. `.list'
  522. =======
  523.    Control (in conjunction with the `.nolist' directive) whether or not
  524. assembly listings are generated.  These two directives maintain an
  525. internal counter (which is zero initially).   `.list' increments the
  526. counter, and `.nolist' decrements it.  Assembly listings are generated
  527. whenever the counter is greater than zero.
  528.    By default, listings are disabled.  When you enable them (with the
  529. `-a' command line option; *note Command-Line Options: Invoking.), the
  530. initial value of the listing counter is one.
  531. File: as.info,  Node: Long,  Next: Nolist,  Prev: List,  Up: Pseudo Ops
  532. `.long EXPRESSIONS'
  533. ===================
  534.    `.long' is the same as `.int', *note `.int': Int..
  535. File: as.info,  Node: Nolist,  Next: Octa,  Prev: Long,  Up: Pseudo Ops
  536. `.nolist'
  537. =========
  538.    Control (in conjunction with the `.list' directive) whether or not
  539. assembly listings are generated.  These two directives maintain an
  540. internal counter (which is zero initially).   `.list' increments the
  541. counter, and `.nolist' decrements it.  Assembly listings are generated
  542. whenever the counter is greater than zero.
  543. File: as.info,  Node: Octa,  Next: Org,  Prev: Nolist,  Up: Pseudo Ops
  544. `.octa BIGNUMS'
  545. ===============
  546.    This directive expects zero or more bignums, separated by commas.
  547. For each bignum, it emits a 16-byte integer.
  548.    The term "octa" comes from contexts in which a "word" is two bytes;
  549. hence *octa*-word for 16 bytes.
  550. File: as.info,  Node: Org,  Next: Psize,  Prev: Octa,  Up: Pseudo Ops
  551. `.org NEW-LC , FILL'
  552. ====================
  553.    `.org' will advance the location counter of the current section to
  554. NEW-LC.  NEW-LC is either an absolute expression or an expression with
  555. the same section as the current subsection.  That is, you can't use
  556. `.org' to cross sections: if NEW-LC has the wrong section, the `.org'
  557. directive is ignored.  To be compatible with former assemblers, if the
  558. section of NEW-LC is absolute, `as' will issue a warning, then pretend
  559. the section of NEW-LC is the same as the current subsection.
  560.    `.org' may only increase the location counter, or leave it
  561. unchanged; you cannot use `.org' to move the location counter backwards.
  562.    Because `as' tries to assemble programs in one pass NEW-LC may not
  563. be undefined.  If you really detest this restriction we eagerly await a
  564. chance to share your improved assembler.
  565.    Beware that the origin is relative to the start of the section, not
  566. to the start of the subsection.  This is compatible with other people's
  567. assemblers.
  568.    When the location counter (of the current subsection) is advanced,
  569. the intervening bytes are filled with FILL which should be an absolute
  570. expression.  If the comma and FILL are omitted, FILL defaults to zero.
  571. File: as.info,  Node: Psize,  Next: Quad,  Prev: Org,  Up: Pseudo Ops
  572. `.psize LINES , COLUMNS'
  573. ========================
  574.    Use this directive to declare the number of lines--and, optionally,
  575. the number of columns--to use for each page, when generating listings.
  576.    If you don't use `.psize', listings will use a default line-count of
  577. 60.  You may omit the comma and COLUMNS specification; the default
  578. width is 200 columns.
  579.    `as' will generate formfeeds whenever the specified number of lines
  580. is exceeded (or whenever you explicitly request one, using `.eject').
  581.    If you specify LINES as `0', no formfeeds are generated save those
  582. explicitly specified with `.eject'.
  583. File: as.info,  Node: Quad,  Next: Sbttl,  Prev: Psize,  Up: Pseudo Ops
  584. `.quad BIGNUMS'
  585. ===============
  586.    `.quad' expects zero or more bignums, separated by commas.  For each
  587. bignum, it emits an 8-byte integer.  If the bignum won't fit in 8
  588. bytes, it prints a warning message; and just takes the lowest order 8
  589. bytes of the bignum.
  590.    The term "quad" comes from contexts in which a "word" is two bytes;
  591. hence *quad*-word for 8 bytes.
  592. File: as.info,  Node: Sbttl,  Next: Scl,  Prev: Quad,  Up: Pseudo Ops
  593. `.sbttl "SUBHEADING"'
  594. =====================
  595.    Use SUBHEADING as the title (third line, immediately after the title
  596. line) when generating assembly listings.
  597.    This directive affects subsequent pages, as well as the current page
  598. if it appears within ten lines of the top of a page.
  599. File: as.info,  Node: Scl,  Next: Section,  Prev: Sbttl,  Up: Pseudo Ops
  600. `.scl CLASS'
  601. ============
  602.    Set the storage-class value for a symbol.  This directive may only be
  603. used inside a `.def'/`.endef' pair.  Storage class may flag whether a
  604. symbol is static or external, or it may record further symbolic
  605. debugging information.
  606.    The `.scl' directive is primarily associated with COFF output; when
  607. configured to generate `b.out' output format, `as' will accept this
  608. directive but ignore it.
  609. File: as.info,  Node: Section,  Next: Set,  Prev: Scl,  Up: Pseudo Ops
  610. `.section NAME, SUBSECTION'
  611. ===========================
  612.    Assemble the following code into end of subsection numbered
  613. SUBSECTION in the COFF named section NAME.  If you omit SUBSECTION,
  614. `as' uses subsection number zero.  `.section .text' is equivalent to
  615. the `.text' directive; `.section .data' is equivalent to the `.data'
  616. directive.
  617. File: as.info,  Node: Set,  Next: Short,  Prev: Section,  Up: Pseudo Ops
  618. `.set SYMBOL, EXPRESSION'
  619. =========================
  620.    This directive sets the value of SYMBOL to EXPRESSION.  This will
  621. change SYMBOL's value and type to conform to EXPRESSION.  If SYMBOL was
  622. flagged as external, it remains flagged. (*Note Symbol Attributes::.)
  623.    You may `.set' a symbol many times in the same assembly.  If the
  624. expression's section is unknowable during pass 1, a second pass over
  625. the source program will be forced.  The second pass is currently not
  626. implemented.  `as' will abort with an error message if one is required.
  627.    If you `.set' a global symbol, the value stored in the object file
  628. is the last value stored into it.
  629. File: as.info,  Node: Short,  Next: Single,  Prev: Set,  Up: Pseudo Ops
  630. `.short EXPRESSIONS'
  631. ====================
  632.    `.short' is normally the same as `.word'.  *Note `.word': Word.
  633.    In some configurations, however, `.short' and `.word' generate
  634. numbers of different lengths; *note Machine Dependencies::..
  635. File: as.info,  Node: Single,  Next: Size,  Prev: Short,  Up: Pseudo Ops
  636. `.single FLONUMS'
  637. =================
  638.    This directive assembles zero or more flonums, separated by commas.
  639. It has the same effect as `.float'.  The exact kind of floating point
  640. numbers emitted depends on how `as' is configured.  *Note Machine
  641. Dependencies::.
  642. File: as.info,  Node: Size,  Next: Space,  Prev: Single,  Up: Pseudo Ops
  643. `.size'
  644. =======
  645.    This directive is generated by compilers to include auxiliary
  646. debugging information in the symbol table.  It is only permitted inside
  647. `.def'/`.endef' pairs.
  648.    `.size' is only meaningful when generating COFF format output; when
  649. `as' is generating `b.out', it accepts this directive but ignores it.
  650. File: as.info,  Node: Space,  Next: Stab,  Prev: Size,  Up: Pseudo Ops
  651. `.space SIZE , FILL'
  652. ====================
  653.    This directive emits SIZE bytes, each of value FILL.  Both SIZE and
  654. FILL are absolute expressions.  If the comma and FILL are omitted, FILL
  655. is assumed to be zero.
  656.    On the AMD 29K, this directive is ignored; it is accepted for
  657. compatibility with other AMD 29K assemblers.
  658.      *Warning:* In most versions of the GNU assembler, the directive
  659.      `.space' has the effect of `.block'  *Note Machine Dependencies::.
  660. File: as.info,  Node: Stab,  Next: Tag,  Prev: Space,  Up: Pseudo Ops
  661. `.stabd, .stabn, .stabs'
  662. ========================
  663.    There are three directives that begin `.stab'.  All emit symbols
  664. (*note Symbols::.), for use by symbolic debuggers.  The symbols are not
  665. entered in the `as' hash table: they cannot be referenced elsewhere in
  666. the source file.  Up to five fields are required:
  667. STRING
  668.      This is the symbol's name.  It may contain any character except
  669.      `\000', so is more general than ordinary symbol names.  Some
  670.      debuggers used to code arbitrarily complex structures into symbol
  671.      names using this field.
  672.      An absolute expression.  The symbol's type is set to the low 8
  673.      bits of this expression.  Any bit pattern is permitted, but `ld'
  674.      and debuggers will choke on silly bit patterns.
  675. OTHER
  676.      An absolute expression.  The symbol's "other" attribute is set to
  677.      the low 8 bits of this expression.
  678.      An absolute expression.  The symbol's descriptor is set to the low
  679.      16 bits of this expression.
  680. VALUE
  681.      An absolute expression which becomes the symbol's value.
  682.    If a warning is detected while reading a `.stabd', `.stabn', or
  683. `.stabs' statement, the symbol has probably already been created and
  684. you will get a half-formed symbol in your object file.  This is
  685. compatible with earlier assemblers!
  686. `.stabd TYPE , OTHER , DESC'
  687.      The "name" of the symbol generated is not even an empty string.
  688.      It is a null pointer, for compatibility.  Older assemblers used a
  689.      null pointer so they didn't waste space in object files with empty
  690.      strings.
  691.      The symbol's value is set to the location counter, relocatably.
  692.      When your program is linked, the value of this symbol will be
  693.      where the location counter was when the `.stabd' was assembled.
  694. `.stabn TYPE , OTHER , DESC , VALUE'
  695.      The name of the symbol is set to the empty string `""'.
  696. `.stabs STRING ,  TYPE , OTHER , DESC , VALUE'
  697.      All five fields are specified.
  698. File: as.info,  Node: Tag,  Next: Text,  Prev: Stab,  Up: Pseudo Ops
  699. `.tag STRUCTNAME'
  700. =================
  701.    This directive is generated by compilers to include auxiliary
  702. debugging information in the symbol table.  It is only permitted inside
  703. `.def'/`.endef' pairs.  Tags are used to link structure definitions in
  704. the symbol table with instances of those structures.
  705.    `.tag' is only used when generating COFF format output; when `as' is
  706. generating `b.out', it accepts this directive but ignores it.
  707. File: as.info,  Node: Text,  Next: Title,  Prev: Tag,  Up: Pseudo Ops
  708. `.text SUBSECTION'
  709. ==================
  710.    Tells `as' to assemble the following statements onto the end of the
  711. text subsection numbered SUBSECTION, which is an absolute expression.
  712. If SUBSECTION is omitted, subsection number zero is used.
  713. File: as.info,  Node: Title,  Next: Type,  Prev: Text,  Up: Pseudo Ops
  714. `.title "HEADING"'
  715. ==================
  716.    Use HEADING as the title (second line, immediately after the source
  717. file name and pagenumber) when generating assembly listings.
  718.    This directive affects subsequent pages, as well as the current page
  719. if it appears within ten lines of the top of a page.
  720. File: as.info,  Node: Type,  Next: Val,  Prev: Title,  Up: Pseudo Ops
  721. `.type INT'
  722. ===========
  723.    This directive, permitted only within `.def'/`.endef' pairs, records
  724. the integer INT as the type attribute of a symbol table entry.
  725.    `.type' is associated only with COFF format output; when `as' is
  726. configured for `b.out' output, it accepts this directive but ignores it.
  727. File: as.info,  Node: Val,  Next: Word,  Prev: Type,  Up: Pseudo Ops
  728. `.val ADDR'
  729. ===========
  730.    This directive, permitted only within `.def'/`.endef' pairs, records
  731. the address ADDR as the value attribute of a symbol table entry.
  732.    `.val' is used only for COFF output; when `as' is configured for
  733. `b.out', it accepts this directive but ignores it.
  734. File: as.info,  Node: Word,  Next: Deprecated,  Prev: Val,  Up: Pseudo Ops
  735. `.word EXPRESSIONS'
  736. ===================
  737.    This directive expects zero or more EXPRESSIONS, of any section,
  738. separated by commas.
  739.    The size of the number emitted, and its byte order, depends on what
  740. kind of computer will run the program.
  741.      *Warning: Special Treatment to support Compilers*
  742.    Machines with a 32-bit address space, but that do less than 32-bit
  743. addressing, require the following special treatment.  If the machine of
  744. interest to you does 32-bit addressing (or doesn't require it; *note
  745. Machine Dependencies::.), you can ignore this issue.
  746.    In order to assemble compiler output into something that will work,
  747. `as' will occasionlly do strange things to `.word' directives.
  748. Directives of the form `.word sym1-sym2' are often emitted by compilers
  749. as part of jump tables.  Therefore, when `as' assembles a directive of
  750. the form `.word sym1-sym2', and the difference between `sym1' and
  751. `sym2' does not fit in 16 bits, `as' will create a "secondary jump
  752. table", immediately before the next label.  This secondary jump table
  753. will be preceded by a short-jump to the first byte after the secondary
  754. table.  This short-jump prevents the flow of control from accidentally
  755. falling into the new table.  Inside the table will be a long-jump to
  756. `sym2'.  The original `.word' will contain `sym1' minus the address of
  757. the long-jump to `sym2'.
  758.    If there were several occurrences of `.word sym1-sym2' before the
  759. secondary jump table, all of them will be adjusted.  If there was a
  760. `.word sym3-sym4', that also did not fit in sixteen bits, a long-jump
  761. to `sym4' will be included in the secondary jump table, and the `.word'
  762. directives will be adjusted to contain `sym3' minus the address of the
  763. long-jump to `sym4'; and so on, for as many entries in the original
  764. jump table as necessary.
  765. File: as.info,  Node: Deprecated,  Prev: Word,  Up: Pseudo Ops
  766. Deprecated Directives
  767. =====================
  768.    One day these directives won't work.  They are included for
  769. compatibility with older assemblers.
  770. .abort
  771. .app-file
  772. .line
  773. File: as.info,  Node: Machine Dependencies,  Next: Copying,  Prev: Pseudo Ops,  Up: Top
  774. Machine Dependent Features
  775. **************************
  776.    The machine instruction sets are (almost by definition) different on
  777. each machine where `as' runs.  Floating point representations vary as
  778. well, and `as' often supports a few additional directives or
  779. command-line options for compatibility with other assemblers on a
  780. particular platform.  Finally, some versions of `as' support special
  781. pseudo-instructions for branch optimization.
  782.    This chapter discusses most of these differences, though it does not
  783. include details on any machine's instruction set.  For details on that
  784. subject, see the hardware manufacturer's manual.
  785. * Menu:
  786. * Vax-Dependent::               VAX Dependent Features
  787. * AMD29K-Dependent::            AMD 29K Dependent Features
  788. * H8/300-Dependent::            Hitachi H8/300 Dependent Features
  789. * H8/500-Dependent::            Hitachi H8/500 Dependent Features
  790. * SH-Dependent::                Hitachi SH Dependent Features
  791. * i960-Dependent::              Intel 80960 Dependent Features
  792. * M68K-Dependent::              M680x0 Dependent Features
  793. * Sparc-Dependent::             SPARC Dependent Features
  794. * Z8000-Dependent::             Z8000 Dependent Features
  795. * i386-Dependent::              80386 Dependent Features
  796. File: as.info,  Node: Vax-Dependent,  Next: AMD29K-Dependent,  Up: Machine Dependencies
  797. VAX Dependent Features
  798. ======================
  799. * Menu:
  800. * Vax-Opts::                    VAX Command-Line Options
  801. * VAX-float::                   VAX Floating Point
  802. * VAX-directives::              Vax Machine Directives
  803. * VAX-opcodes::                 VAX Opcodes
  804. * VAX-branch::                  VAX Branch Improvement
  805. * VAX-operands::                VAX Operands
  806. * VAX-no::                      Not Supported on VAX
  807. File: as.info,  Node: Vax-Opts,  Next: VAX-float,  Up: Vax-Dependent
  808. VAX Command-Line Options
  809. ------------------------
  810.    The Vax version of `as' accepts any of the following options, gives
  811. a warning message that the option was ignored and proceeds.  These
  812. options are for compatibility with scripts designed for other people's
  813. assemblers.
  814. `-D' (Debug)
  815. `-S' (Symbol Table)
  816. `-T' (Token Trace)
  817.      These are obsolete options used to debug old assemblers.
  818. `-d' (Displacement size for JUMPs)
  819.      This option expects a number following the `-d'.  Like options
  820.      that expect filenames, the number may immediately follow the `-d'
  821.      (old standard) or constitute the whole of the command line
  822.      argument that follows `-d' (GNU standard).
  823. `-V' (Virtualize Interpass Temporary File)
  824.      Some other assemblers use a temporary file.  This option commanded
  825.      them to keep the information in active memory rather than in a
  826.      disk file.  `as' always does this, so this option is redundant.
  827. `-J' (JUMPify Longer Branches)
  828.      Many 32-bit computers permit a variety of branch instructions to
  829.      do the same job.  Some of these instructions are short (and fast)
  830.      but have a limited range; others are long (and slow) but can
  831.      branch anywhere in virtual memory.  Often there are 3 flavors of
  832.      branch: short, medium and long.  Some other assemblers would emit
  833.      short and medium branches, unless told by this option to emit
  834.      short and long branches.
  835. `-t' (Temporary File Directory)
  836.      Some other assemblers may use a temporary file, and this option
  837.      takes a filename being the directory to site the temporary file.
  838.      Since `as' does not use a temporary disk file, this option makes
  839.      no difference.  `-t' needs exactly one filename.
  840.    The Vax version of the assembler accepts two options when compiled
  841. for VMS.  They are `-h', and `-+'.  The `-h' option prevents `as' from
  842. modifying the symbol-table entries for symbols that contain lowercase
  843. characters (I think).  The `-+' option causes `as' to print warning
  844. messages if the FILENAME part of the object file, or any symbol name is
  845. larger than 31 characters.  The `-+' option also insertes some code
  846. following the `_main' symbol so that the object file will be compatible
  847. with Vax-11 "C".
  848. File: as.info,  Node: VAX-float,  Next: VAX-directives,  Prev: Vax-Opts,  Up: Vax-Dependent
  849. VAX Floating Point
  850. ------------------
  851.    Conversion of flonums to floating point is correct, and compatible
  852. with previous assemblers.  Rounding is towards zero if the remainder is
  853. exactly half the least significant bit.
  854.    `D', `F', `G' and `H' floating point formats are understood.
  855.    Immediate floating literals (*e.g.* `S`$6.9') are rendered
  856. correctly.  Again, rounding is towards zero in the boundary case.
  857.    The `.float' directive produces `f' format numbers.  The `.double'
  858. directive produces `d' format numbers.
  859. File: as.info,  Node: VAX-directives,  Next: VAX-opcodes,  Prev: VAX-float,  Up: Vax-Dependent
  860. Vax Machine Directives
  861. ----------------------
  862.    The Vax version of the assembler supports four directives for
  863. generating Vax floating point constants.  They are described in the
  864. table below.
  865. `.dfloat'
  866.      This expects zero or more flonums, separated by commas, and
  867.      assembles Vax `d' format 64-bit floating point constants.
  868. `.ffloat'
  869.      This expects zero or more flonums, separated by commas, and
  870.      assembles Vax `f' format 32-bit floating point constants.
  871. `.gfloat'
  872.      This expects zero or more flonums, separated by commas, and
  873.      assembles Vax `g' format 64-bit floating point constants.
  874. `.hfloat'
  875.      This expects zero or more flonums, separated by commas, and
  876.      assembles Vax `h' format 128-bit floating point constants.
  877. File: as.info,  Node: VAX-opcodes,  Next: VAX-branch,  Prev: VAX-directives,  Up: Vax-Dependent
  878. VAX Opcodes
  879. -----------
  880.    All DEC mnemonics are supported.  Beware that `case...' instructions
  881. have exactly 3 operands.  The dispatch table that follows the `case...'
  882. instruction should be made with `.word' statements.  This is compatible
  883. with all unix assemblers we know of.
  884. File: as.info,  Node: VAX-branch,  Next: VAX-operands,  Prev: VAX-opcodes,  Up: Vax-Dependent
  885. VAX Branch Improvement
  886. ----------------------
  887.    Certain pseudo opcodes are permitted.  They are for branch
  888. instructions.  They expand to the shortest branch instruction that will
  889. reach the target.  Generally these mnemonics are made by substituting
  890. `j' for `b' at the start of a DEC mnemonic.  This feature is included
  891. both for compatibility and to help compilers.  If you don't need this
  892. feature, don't use these opcodes.  Here are the mnemonics, and the code
  893. they can expand into.
  894. `jbsb'
  895.      `Jsb' is already an instruction mnemonic, so we chose `jbsb'.
  896.     (byte displacement)
  897.           `bsbb ...'
  898.     (word displacement)
  899.           `bsbw ...'
  900.     (long displacement)
  901.           `jsb ...'
  902. `jbr'
  903.      Unconditional branch.
  904.     (byte displacement)
  905.           `brb ...'
  906.     (word displacement)
  907.           `brw ...'
  908.     (long displacement)
  909.           `jmp ...'
  910. `jCOND'
  911.      COND may be any one of the conditional branches `neq', `nequ',
  912.      `eql', `eqlu', `gtr', `geq', `lss', `gtru', `lequ', `vc', `vs',
  913.      `gequ', `cc', `lssu', `cs'.  COND may also be one of the bit tests
  914.      `bs', `bc', `bss', `bcs', `bsc', `bcc', `bssi', `bcci', `lbs',
  915.      `lbc'.  NOTCOND is the opposite condition to COND.
  916.     (byte displacement)
  917.           `bCOND ...'
  918.     (word displacement)
  919.           `bNOTCOND foo ; brw ... ; foo:'
  920.     (long displacement)
  921.           `bNOTCOND foo ; jmp ... ; foo:'
  922. `jacbX'
  923.      X may be one of `b d f g h l w'.
  924.     (word displacement)
  925.           `OPCODE ...'
  926.     (long displacement)
  927.                OPCODE ..., foo ;
  928.                brb bar ;
  929.                foo: jmp ... ;
  930.                bar:
  931. `jaobYYY'
  932.      YYY may be one of `lss leq'.
  933. `jsobZZZ'
  934.      ZZZ may be one of `geq gtr'.
  935.     (byte displacement)
  936.           `OPCODE ...'
  937.     (word displacement)
  938.                OPCODE ..., foo ;
  939.                brb bar ;
  940.                foo: brw DESTINATION ;
  941.                bar:
  942.     (long displacement)
  943.                OPCODE ..., foo ;
  944.                brb bar ;
  945.                foo: jmp DESTINATION ;
  946.                bar:
  947. `aobleq'
  948. `aoblss'
  949. `sobgeq'
  950. `sobgtr'
  951.     (byte displacement)
  952.           `OPCODE ...'
  953.     (word displacement)
  954.                OPCODE ..., foo ;
  955.                brb bar ;
  956.                foo: brw DESTINATION ;
  957.                bar:
  958.     (long displacement)
  959.                OPCODE ..., foo ;
  960.                brb bar ;
  961.                foo: jmp DESTINATION ;
  962.                bar:
  963. File: as.info,  Node: VAX-operands,  Next: VAX-no,  Prev: VAX-branch,  Up: Vax-Dependent
  964. VAX Operands
  965. ------------
  966.    The immediate character is `$' for Unix compatibility, not `#' as
  967. DEC writes it.
  968.    The indirect character is `*' for Unix compatibility, not `@' as DEC
  969. writes it.
  970.    The displacement sizing character is ``' (an accent grave) for Unix
  971. compatibility, not `^' as DEC writes it.  The letter preceding ``' may
  972. have either case.  `G' is not understood, but all other letters (`b i l
  973. s w') are understood.
  974.    Register names understood are `r0 r1 r2 ... r15 ap fp sp pc'.  Any
  975. case of letters will do.
  976.    For instance
  977.      tstb *w`$4(r5)
  978.    Any expression is permitted in an operand.  Operands are comma
  979. separated.
  980. File: as.info,  Node: VAX-no,  Prev: VAX-operands,  Up: Vax-Dependent
  981. Not Supported on VAX
  982. --------------------
  983.    Vax bit fields can not be assembled with `as'.  Someone can add the
  984. required code if they really need it.
  985. File: as.info,  Node: AMD29K-Dependent,  Next: H8/300-Dependent,  Prev: Vax-Dependent,  Up: Machine Dependencies
  986. AMD 29K Dependent Features
  987. ==========================
  988. * Menu:
  989. * AMD29K Options::              Options
  990. * AMD29K Syntax::               Syntax
  991. * AMD29K Floating Point::       Floating Point
  992. * AMD29K Directives::           AMD 29K Machine Directives
  993. * AMD29K Opcodes::              Opcodes
  994. File: as.info,  Node: AMD29K Options,  Next: AMD29K Syntax,  Up: AMD29K-Dependent
  995. Options
  996. -------
  997.    `as' has no additional command-line options for the AMD 29K family.
  998. File: as.info,  Node: AMD29K Syntax,  Next: AMD29K Floating Point,  Prev: AMD29K Options,  Up: AMD29K-Dependent
  999. Syntax
  1000. ------
  1001. * Menu:
  1002. * AMD29K-Chars::                Special Characters
  1003. * AMD29K-Regs::                 Register Names
  1004. File: as.info,  Node: AMD29K-Chars,  Next: AMD29K-Regs,  Up: AMD29K Syntax
  1005. Special Characters
  1006. ..................
  1007.    `;' is the line comment character.
  1008.    `@' can be used instead of a newline to separate statements.
  1009.    The character `?' is permitted in identifiers (but may not begin an
  1010. identifier).
  1011.